package com.lagou.module2homewor;

public class ArrayTest {

    /**
     * 获取一个行和列都为16的整型二维数组，并且给数组赋值
     */
    public int[][] getArray(){
        int[][] arr = new int[16][16];
        for(int i = 0 ; i < 16; i++){
            for(int j = 0 ; j < 16; j++){
                arr[i][j] = i + j;
            }
        }
        return arr;
    }

    /**
     * 打印一个二维数组的元素
     */
    public int show(int[][] arr){
        if( null == arr){
            System.out.println("arr is null");
            return -1;
        }
        for(int i = 0 ;i < arr.length; i++){
            for(int j = 0;j < arr[0].length; j++){
                System.out.print("\t" + arr[i][j]);
            }
            System.out.println();
        }
        return 0;
    }

    /**
     * 实现二维数组中所有行，所有列的所有元素的累加和打印
     */
    public int printRowColSum(int[][] arr){
        if( null == arr){
            System.out.println("arr is null");
            return -1;
        }

        //实现所有行的所有元素的打印
        for(int i = 0 ; i < arr.length ; i++ ){
            int rowSum = 0;
            for(int j = 0; j < arr[0].length; j++ ){
                rowSum += arr[i][j];
            }
            System.out.println("第"+(i+1)+"行的累加和是: " + rowSum);
        }

        System.out.println("------------------------------");

        //实现所有列的所有元素的打印
        for(int i = 0 ; i < arr[0].length ; i++ ){
            int colSum = 0;
            for(int j = 0; j < arr.length; j++ ){
                colSum += arr[j][i];
            }
            System.out.println("第"+(i+1)+"列的累加和是: " + colSum);
        }
        return 0;
    }

    /**
     * 打印实现左斜线上元素的累加和，右斜线上元的累加和
     * @return
     */
    public int printDiagonalSum(int[][] arr){
        if( null == arr){
            System.out.println("arr is null");
            return -1;
        }
        //打印左斜线上所有的元素的和
        int sum1 = 0;
        for(int i = 0 ; i < arr.length; i++ ){
            for(int j = 0 ; j < arr[0].length; j++ ){
                if(i == j){
                    sum1 += arr[i][j];
                }
            }
        }
        System.out.println("从左上角到右下角所有的元素的和是: " + sum1);
        int sum2 = 0;
        for(int i = 0 ; i < arr.length; i++ ){
            for(int j = 0 ; j < arr[0].length; j++ ){
                if(i + j == arr[0].length - 1 ){
                    //System.out.println("i = " + i + " j = " + j + " --> " + arr[i][j]);
                    sum2 += arr[i][j];
                }
            }
        }
        System.out.println("从右上角到左下角所有的元素的和是: " + sum2);
        return 0;
    }
    public static void main(String[] args) {
        ArrayTest arrayTest = new ArrayTest();
        int[][] arr = arrayTest.getArray();

        arrayTest.show(arr);
        System.out.println("------------------------");
        arrayTest.printRowColSum(arr);
        System.out.println("------------------------");
        arrayTest.printDiagonalSum(arr);
    }
}
